import axios from 'axios'
import useAuthStore from "@/stores/auth.js";
//useRouter只能在vue的组合式api中生效，所以直接导入路由实例
import router from "@/router/index.js";
// axios实例
const instance = axios.create({
    baseURL: 'http://127.0.0.1:8080',
    timeout: 5000,
})
// 请求拦截器，如果有token，那就把token放到请求头中
instance.interceptors.request.use(config => {
    const authStore = useAuthStore();
    if(authStore.token){
        config.headers.token = authStore.token;
    }
    return config;
})
//响应拦截器，根据http状态码分情况处理
instance.interceptors.response.use(response => response,
    error => {
    if(error.response){
        const authStore = useAuthStore();
        switch (error.response.status) {
            case 401:
                authStore.logoutSuccess();
                router.push({path:'/login',query: { redirect: router.currentRoute.value.fullPath }});
                break;
            case 403:
                alert("权限不足!");
                break;
            case 404:
                alert("资源不存在");
                break;
            default:
                console.error("服务器内部错误");
        }
    }else if (error.request) {
        alert("网络异常");
    }else {
        // 其他错误（如请求配置错误）
        console.error("请求配置错误:", error.message);
    }
    return Promise.reject(error);
    })
export default instance;